package view;

import com.vividsolutions.jts.geom.Point;
import java.io.Serializable;
import java.sql.Time;
import java.util.HashSet;
import java.util.Set;
import model.EstiloPontoGastronomico;
import model.PontoGastronomico;

/**
 *
 * @author Lucas S Bueno
 */
public class PontoGastronomicoBean implements Serializable {

   private int id;
   private Point geolocalizacao;
   private String nome;
   private String telefone;
   private String email;
   private Time horaAbre;
   private Time horaFecha;
   private int quantidadeAvaliacoes;
   private float avaliacaoMedia;
   private int quantidadePrecos;
   private float precoMedio;
   private TipoPontoGastronomicoBean tipo;
   private UsuarioBean cadastradoPor;
   private Set<EstiloPontoGastronomicoBean> estilos;
   private String cardapio;

   public PontoGastronomicoBean() {
   }

   public PontoGastronomicoBean(int id, Point geolocalizacao, String nome, String telefone, String email, Time horaAbre, Time horaFecha, int quantidadeAvaliacoes, float avaliacaoMedia, int quantidadePrecos, float precoMedio, TipoPontoGastronomicoBean tipo, UsuarioBean cadastradoPor, Set<EstiloPontoGastronomicoBean> estilos, String cardapio) {
      this.id = id;
      this.geolocalizacao = geolocalizacao;
      this.nome = nome;
      this.telefone = telefone;
      this.email = email;
      this.horaAbre = horaAbre;
      this.horaFecha = horaFecha;
      this.quantidadeAvaliacoes = quantidadeAvaliacoes;
      this.avaliacaoMedia = avaliacaoMedia;
      this.quantidadePrecos = quantidadePrecos;
      this.precoMedio = precoMedio;
      this.tipo = tipo;
      this.cadastradoPor = cadastradoPor;
      this.estilos = estilos;
      this.cardapio = cardapio;
   }

   public PontoGastronomicoBean(Point geolocalizacao, String nome, String telefone, String email, Time horaAbre, Time horaFecha, int quantidadeAvaliacoes, float avaliacaoMedia, int quantidadePrecos, float precoMedio, TipoPontoGastronomicoBean tipo, UsuarioBean cadastradoPor, Set<EstiloPontoGastronomicoBean> estilos, String cardapio) {
      this.geolocalizacao = geolocalizacao;
      this.nome = nome;
      this.telefone = telefone;
      this.email = email;
      this.horaAbre = horaAbre;
      this.horaFecha = horaFecha;
      this.quantidadeAvaliacoes = quantidadeAvaliacoes;
      this.avaliacaoMedia = avaliacaoMedia;
      this.quantidadePrecos = quantidadePrecos;
      this.precoMedio = precoMedio;
      this.tipo = tipo;
      this.cadastradoPor = cadastradoPor;
      this.estilos = estilos;
      this.cardapio = cardapio;
   }

   public PontoGastronomicoBean(int id) {
      this.id = id;
   }
   
   public PontoGastronomicoBean(PontoGastronomico pontoGastronomico) {
      this.id = pontoGastronomico.getId();
      this.geolocalizacao = pontoGastronomico.getGeolocalizacao();
      this.nome = pontoGastronomico.getNome();
      this.telefone = pontoGastronomico.getTelefone();
      this.email = pontoGastronomico.getEmail();
      this.horaAbre = pontoGastronomico.getHoraAbre();
      this.horaFecha = pontoGastronomico.getHoraFecha();
      this.quantidadeAvaliacoes = pontoGastronomico.getQuantidadeAvaliacoes();
      this.avaliacaoMedia = pontoGastronomico.getAvaliacaoMedia();
      this.quantidadePrecos = pontoGastronomico.getQuantidadePrecos();
      this.precoMedio = pontoGastronomico.getPrecoMedio();
      this.tipo = new TipoPontoGastronomicoBean(pontoGastronomico.getTipo());
      
      if (pontoGastronomico.getCadastradoPor() != null) {
         this.cadastradoPor = new UsuarioBean(pontoGastronomico.getCadastradoPor());
      } else {
         this.cadastradoPor = null;
      }      
      
      Set<EstiloPontoGastronomicoBean> estilos = new HashSet<EstiloPontoGastronomicoBean>();
      for (EstiloPontoGastronomico estilo : pontoGastronomico.getEstilos()) {
         estilos.add(new EstiloPontoGastronomicoBean(estilo));
      }
      this.estilos = estilos;
      
      this.cardapio = pontoGastronomico.getCardapio();
   }

   public int getId() {
      return id;
   }

   public void setId(int id) {
      this.id = id;
   }

   public Point getGeolocalizacao() {
      return geolocalizacao;
   }

   public void setGeolocalizacao(Point geolocalizacao) {
      this.geolocalizacao = geolocalizacao;
   }

   public String getNome() {
      return nome;
   }

   public void setNome(String nome) {
      this.nome = nome;
   }

   public String getTelefone() {
      return telefone;
   }

   public void setTelefone(String telefone) {
      this.telefone = telefone;
   }

   public String getEmail() {
      return email;
   }

   public void setEmail(String email) {
      this.email = email;
   }

   public Time getHoraAbre() {
      return horaAbre;
   }

   public void setHoraAbre(Time horaAbre) {
      this.horaAbre = horaAbre;
   }

   public Time getHoraFecha() {
      return horaFecha;
   }

   public void setHoraFecha(Time horaFecha) {
      this.horaFecha = horaFecha;
   }

   public int getQuantidadeAvaliacoes() {
      return quantidadeAvaliacoes;
   }

   public void setQuantidadeAvaliacoes(int quantidadeAvaliacoes) {
      this.quantidadeAvaliacoes = quantidadeAvaliacoes;
   }

   public float getAvaliacaoMedia() {
      return avaliacaoMedia;
   }

   public void setAvaliacaoMedia(float avaliacaoMedia) {
      this.avaliacaoMedia = avaliacaoMedia;
   }

   public int getQuantidadePrecos() {
      return quantidadePrecos;
   }

   public void setQuantidadePrecos(int quantidadePrecos) {
      this.quantidadePrecos = quantidadePrecos;
   }

   public float getPrecoMedio() {
      return precoMedio;
   }

   public void setPrecoMedio(float precoMedio) {
      this.precoMedio = precoMedio;
   }

   public TipoPontoGastronomicoBean getTipo() {
      return tipo;
   }

   public void setTipo(TipoPontoGastronomicoBean tipo) {
      this.tipo = tipo;
   }

   public UsuarioBean getCadastradoPor() {
      return cadastradoPor;
   }

   public void setCadastradoPor(UsuarioBean cadastradoPor) {
      this.cadastradoPor = cadastradoPor;
   }

   public Set<EstiloPontoGastronomicoBean> getEstilos() {
      return estilos;
   }

   public void setEstilos(Set<EstiloPontoGastronomicoBean> estilos) {
      this.estilos = estilos;
   }

   public String getCardapio() {
      return cardapio;
   }

   public void setCardapio(String cardapio) {
      this.cardapio = cardapio;
   }
}
